<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //变量提升：var声明的变量，将变量的声明，提升到他所在的作用域顶部
        console.log(a); //undefined
        var a; //声明
        a = 1;  //赋值
        // console.log(b);存在报错，没有变量提升
        let b;
        b = 2;
        // 块级作用域
        var c = 1;//全局变量 全局作用域
        function fn1() {
            var d = 2; //函数内  函数作用域 局部
        }
        //{代码块}
        // var没有块级作用域
        for (var i = 0; i < 5; i++) {

        }
        //var 声明的循环变量。会暴露出全局变量，变量的值是===循环的终止条件
        console.log(i); //5
        //let 
        for (let i = 0; i < 5; i++) {

        }
        console.log(i);//5
        //  暂时性死区
        function fn3() {
            console.log(a);//let声明之前使用报错，代码不能想上执行，暂时去死区
            var a = 1;
            console.log(1);
        }
        //fn3()
        // 是否为window属性
        var s = 1111;
        console.log(window); //window
        console.log(window.s);//1111
        // let
        let s1 = 1111;
        console.log(window);//window
        console.log(window.s1);//undefined
    </script>
</body>

</html>